package ninth.Java中线程的实现;

class MyThread1 extends Thread {
    private String name;

    public MyThread1(String name) {
        this.name = name;
    }

    public void run() {
        for (int i = 0; i < 10; i++) {
            System.out.println(name + "运行，i=" + i);
        }
    }
}

public class 启动线程 {
    public static void main(String[] args) {
        MyThread1 thread1 = new MyThread1("线程A");
        MyThread1 thread2 = new MyThread1("线程B");
        thread1.start();//启动多线程
        thread2.start();//启动多线程
    }
}
/*
D:\WorkSpaces\Java\jdk-21\bin\java.exe "-javaagent:D:\Software\IntelliJ IDEA\IntelliJ IDEA 2023.3.2\lib\idea_rt.jar=61561:D:\Software\IntelliJ IDEA\IntelliJ IDEA 2023.3.2\bin" -Dfile.encoding=UTF-8 -Dsun.stdout.encoding=UTF-8 -Dsun.stderr.encoding=UTF-8 -classpath D:\WorkSpaces\JavaDevelopBase_start_329\out\production\JavaDevelopBase_start_329 ninth.Java中线程的实现.启动线程
线程A运行，i=0
线程A运行，i=1
线程B运行，i=0
线程A运行，i=2
线程B运行，i=1
线程A运行，i=3
线程B运行，i=2
线程B运行，i=3
线程A运行，i=4
线程B运行，i=4
线程A运行，i=5
线程B运行，i=5
线程A运行，i=6
线程B运行，i=6
线程A运行，i=7
线程B运行，i=7
线程A运行，i=8
线程B运行，i=8
线程B运行，i=9
线程A运行，i=9

Process finished with exit code 0

 */

/**
 * 从程序的洁后果可以发现，两个线程都是交错运行的，哪个线程对象抢到了CPU资源
 * 哪个线程就先运行，所以程序每次的运行结果肯定式不一样的。
 * 在线程中u似然调用的是start（）方法 但实际上调用的是run()方法的主体
 *
 * 如果一个类通过继承Thread类来实现 那么只能调用一次start()方法，如果调用多次 则会抛出”IllegalThreadStateException“异常
 */